package com.sxf.redis.iredis;

/**
 * 
 * @description: string 工具类
 * @author: zhangyb@ccccit.com.cn 
 * @date: 2021年1月5日 下午2:26:22
 */
public interface IStringRedisUtils {

	/**
	 * 设置值
	 * @param nameSpace
	 * @param key
	 * @param value
	 * @param timeoutSeconds
	 */
	void set(String nameSpace, String key, Object value, long timeoutSeconds);

	/**
	 * 设置值
	 * @param key
	 * @param value
	 * @param timeoutSeconds
	 */
	default void set(String key, Object value, long timeoutSeconds) {
		set(null, key, value, timeoutSeconds);
	};
	
	/**
	 * 设置值，存在不更新，不存在更新
	 * @param nameSpace
	 * @param key
	 * @param value
	 * @param timeoutSeconds
	 * @return true 设置成功，false设置失败
	 */
	boolean setNx(String nameSpace, String key, Object value, long timeoutSeconds);
	
	/**
	 * 设置值，存在不更新，不存在更新
	 * @param nameSpace
	 * @param key
	 * @param value
	 * @param timeoutSeconds
	 * @return true 设置成功，false设置失败
	 */
	default boolean setNx(String key, Object value, long timeoutSeconds) {
		return setNx(null, key, value, timeoutSeconds);
	};

	/**
	 * 获取值
	 * @param nameSpace
	 * @param key
	 * @return
	 */
	Object get(String nameSpace, String key);

	/**
	 *  获取值
	 * @param key
	 * @return
	 */
	default Object get(String key) {
		return get(null, key);
	}

}
